package Demo63;

import java.util.*;

/**
 * 字母异位词分组
 * https://leetcode.cn/problems/sfvd7V/
 * 将字符串排序,然后作为key进行分组放入到hash表中
 * 然后进行分组, 最后返回
 */
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        // 构建hash表
        Map<String,List<String>> hash = new HashMap<>();

        for(String str : strs) {
            // 先将字符串进行排序
            char[] tmp = str.toCharArray();
            Arrays.sort(tmp);
            String key = new String(tmp);
            // 根据排序,插入到hash表中

            if(!hash.containsKey(key)) {
                hash.put(key,new ArrayList<>());
            }
            hash.get(key).add(str);
        }

        return new ArrayList<>(hash.values());
    }
}